Vi henter en gang om dagen, kl. 1 om natten UTC.

Sidst opdateret

Vi trækker data gennem apien i vores kalendersystem og genererer denne rapport/oversigt/noget.

Ja, det ville være fint med interaktive grafer. Det er jeg mest vant til at arbejde med i Shiny, og det har vi ikke mulighed for (med mindre nogen giver os lov til have vores egen server…)

library(plotly)
## Loading required package: ggplot2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(rmarkdown)
library(here)
## here() starts at /Users/runner/work/tal-og-data/tal-og-data
library(ggplot2)
library(plotly)
library(knitr)
library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(httr)
## 
## Attaching package: 'httr'
## The following object is masked from 'package:plotly':
## 
##     config
p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
            geom_bar(position = "dodge")
ggplotly(p)

Er vi online, eller er vi lokalt:

if(here::here() == "C:/Users/cbk/Documents/R_projekter/tal-og-data"){
  print("lokalt")
  client_secret <- keyring::key_get("libcal")
}else{
  print("online")
  client_secret <- Sys.getenv("CLIENT_SECRET")
}
## [1] "online"

Få token:

token_endpoint <- "https://kubkalender.kb.dk/1.1/oauth/token"
client_id <- "110"
token <- POST(token_endpoint,
              body = list(grant_type = "client_credentials",
                          client_id = client_id,
                          client_secret = client_secret)) %>% 
  content()

Får vi overhovedet et token?

token <- token %>% 
  .[["access_token"]]

først antal characterer i hemmeligheden

print(nchar(client_secret))
## [1] 32

så antal characterer i token.

print(nchar(token))
## [1] 40

Hent kalendere:

kalendere <- modify_url(
  url = "https://kubkalender.kb.dk",
  path = c("1.1", "calendars")
) %>% 
  GET(add_headers('Authorization' = paste("bearer", token)))
kalendere
## Response [https://kubkalender.kb.dk/1.1/calendars]
##   Date: 2022-04-30 02:52
##   Status: 200
##   Content-Type: application/json;charset=utf-8
##   Size: 1.51 kB
kalendere <- kalendere %>% content() %>% 
  as_tibble()

print(kalendere)
## # A tibble: 6 × 1
##   calendars       
##   <list>          
## 1 <named list [5]>
## 2 <named list [5]>
## 3 <named list [5]>
## 4 <named list [5]>
## 5 <named list [5]>
## 6 <named list [5]>
# kalendere %>% 
# unnest_wider(calendars) %>% 
#   unnest_wider(url) %>%
#   unnest_wider(owner, names_repair = "universal") %>%
#   rename(kalender_navn = name...2,
#          ejer_id = id,
#          ejer_navn = name...6)
# 
# kalendere %>%
#   select(calid, kalender_navn, public) %>% print()

Kønsfordeling er baseret på opgørelse fra Danmarks Statistik med antallet af mænd og kvinder der har et givet navn pr 1. januar 2021. Nogle navne kan bruges af både mænd og kvinder. De optræder som et vægtet gennemsnit af fordelingen. Enkelte navne optræder ikke i Danmarks statistik. De optræder som NA